import { observable, action, toJS } from 'mobx';
import { WeaTableNew, WeaForm } from 'comsMobx';

const { TableStore } = WeaTableNew;
import { WeaLocaleProvider } from 'ecCom';

const getLabel = WeaLocaleProvider.getLabel;
/**
 * @author ljc 2017-12-21
 * 客户列表通用store模板，适用于列表+高级搜索查询模式，实例：/
 */
export class ListStore {
    /** 列表store */
    @observable loading = false;
    title = '';
    @observable dataKey = '';
    @observable tableStore = new TableStore();
    @observable selectedKeys = [];
    /** 高级查询store */
    @observable form = new WeaForm();
    @observable showSearchAd = false; // 高级搜索显隐
     condition = [];

    /** 顶部Tab组件store */
    topTab = [];
    topTabCount = {};

    constructor() {
      this.setLoading = this.setLoading.bind(this);
      this.setTitle = this.setTitle.bind(this);
      this.setShowSearchAd = this.setShowSearchAd.bind(this);
      this.setFormFields = this.setFormFields.bind(this);
      this.appendFormFields = this.appendFormFields.bind(this);
      this.clearFormFields = this.clearFormFields.bind(this);
      this.resetForm = this.resetForm.bind(this);
      this.resetTable = this.resetTable.bind(this);
    }
    // 刷新列表
    reLoad = () => {
      this.tableStore.getDatas(this.tableStore.dataKey, this.tableStore.current, this.tableStore.pageSize, this.tableStore.sortParams);
    }

    // 获得选中项
    getSelectedKeys = () => toJS(this.tableStore.selectedRowKeys)

    // 设置选中项
    setSelectedKeys = arr => this.tableStore.setSelectedRowKeys(arr)


    @action
    setLoading(bool = false) {
      this.loading = bool;
    }

    setTitle(title) {
      this.title = title;
    }

    setShowSearchAd(bool) {
      this.showSearchAd = bool;
    }

    setFormFields(value) {
      this.form.updateFields(value, true); // true代表完全覆盖方式更新条件值
    }

    appendFormFields(value) {
      this.form.updateFields(value, false);
    }

    clearFormFields() {
      this.form.resetConditionValue(); // 清除查询条件值
    }

    resetForm() {
      this.form = new WeaForm();
    }

    resetTable() {
      this.selectedKeys = [];
      this.dataKey = '';
      this.tableStore = new TableStore();
    }
}
